 /*******************************************************************************
  * Copyright (c) 2006 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
  * IBM Corporation - initial API and implementation
  *******************************************************************************/

 package org.eclipse.ui.internal.cheatsheets.composite.explorer;

 import org.eclipse.core.runtime.IPath;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.internal.cheatsheets.CheatSheetPlugin;
 import org.eclipse.ui.internal.cheatsheets.Messages;
 import org.eclipse.ui.internal.cheatsheets.composite.model.AbstractTask;
 import org.eclipse.ui.internal.cheatsheets.composite.model.CompositeCheatSheetModel;
 import org.eclipse.ui.internal.cheatsheets.composite.model.TaskStateUtilities;
 import org.eclipse.ui.internal.provisional.cheatsheets.ICompositeCheatSheetTask;

 /**
  * Action to reset a single task and its children
  */

 public class ResetTaskAction extends Action {
     private AbstractTask task;

     public ResetTaskAction(ICompositeCheatSheetTask task) {
         this.task = (AbstractTask) task;
         this.setText(Messages.COMPOSITE_MENU_RESET);
         IPath path = CheatSheetPlugin.ICONS_PATH.append(CheatSheetPlugin.T_ELCL).append("return_to_start.gif");//$NON-NLS-1$
 ImageDescriptor restartImage = CheatSheetPlugin.createImageDescriptor(CheatSheetPlugin.getPlugin().getBundle(), path);
         this.setImageDescriptor(restartImage);
     }
     
     public void run() {
         AbstractTask[] restartTasks = TaskStateUtilities.getRestartTasks(task);
         if (restartTasks.length == 0) return;
         TreeLabelProvider labelProvider = new TreeLabelProvider();
         ConfirmRestartDialog dlg = new ConfirmRestartDialog(
                 PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), restartTasks, labelProvider);
         dlg.open();
         labelProvider.dispose();
         if (dlg.getReturnCode() == ConfirmRestartDialog.OK) {
             CompositeCheatSheetModel model = (CompositeCheatSheetModel) restartTasks[0].getCompositeCheatSheet();
             model.resetTasks(restartTasks);
         }
     }

 }

